package com.itheima.innerclass2;

public class Test {

    public static void main(String[] args) {

        /*Swim s = new Cat();
        start(s);*/

        //匿名内部类的作用：通常可以作为一个对象参数传递给方法使用

        /*
        使用匿名内部类来创建一个实现了特定接口的对象，
        这种方式实际上是在创建一个未命名的类，
        它实现了指定的接口，并立即实例化这个类。
         */
        Swim s = new Swim() {
            @Override
            public void swimming() {
                System.out.println("狗在游泳~");
            }
        };
        start(s);

        System.out.println("---------------");

        start(new Swim() {
            @Override
            public void swimming() {
                System.out.println("猫在游泳~");
            }
        });

    }

    //设计一个方法，模拟猫狗在游泳
    public static void start(Swim s){
        System.out.println("开始");
        s.swimming();
        System.out.println("结束");
    }
    
}

/*class Cat implements Swim{
    @Override
    public void swimming() {
        System.out.println("猫在游泳~");
    }
}

class Dog implements Swim{
    @Override
    public void swimming() {
        System.out.println("狗在游泳~");
    }
}*/

interface Swim{

    void swimming();
}
